import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

// 导入element-ui
import ElementUI from 'element-ui';
// 导入element-ui中的样式文件
import 'element-ui/lib/theme-chalk/index.css';

// 在vue中使用ElementUI
Vue.use(ElementUI);

// 导入安装的axios模块
import axios from 'axios'


Vue.config.productionTip = false

let vm = null

new Vue({
    router,
    store,
    render: h => h(App),
    mounted() {
        vm = this
    }
}).$mount('#app')


// 创建axios实例
const service = axios.create({
    // baseURL: 'http://localhost:8989/iqiyiadmin', // api的base_url
    timeout: 5000 // 请求超时时间
});

//添加请求拦截器
service.interceptors.request.use(
    config => {
        // 在发送请求之前做些什么
        // 例如，添加token到请求头
        if (localStorage.getItem('token')) {
            config.headers['Authorization'] = localStorage.getItem('token');
        }
        // 当设置完请求头后，必须返回config
        return config;
    },
    error => {
        // 对请求错误做些什么
        return Promise.reject(error);
    }
)


// 添加响应拦截器
service.interceptors.response.use(
    response => {
        /**
         * 对响应数据做点什么
         * 例如，如果后端返回了状态码200，但自定义的code码表示错误，那么你可以在这里进行拦截处理
         */
        return response;
    },
    error => {
        // 处理响应错误
        if (error.response && [401, 403].includes(error.response.status)) {
            // 如果响应状态码是401或403，则跳转到登录页面
            router.push('/login');
            return ;
        }
        // 可以在这里弹出一个错误信息给用户
        if (error.response.data.message!==''){
            vm.$message.error(error.response.data.message);
        }
        // 根据你的项目需求，这里可以返回一个rejected的Promise
        return Promise.reject(error);
    }
);
// 在Vue中定义一个原型变量$http,它的值为导入的axios,以后就可以从vue中得到$http,然后调用$http.get(...)或者$http.post(...)
Vue.prototype.$http = service



